AWS CLIを用いて複数リージョンでSecurity Hubを無効化してみた
はじめに
リテールアプリ共創部のるおんです。 先日あるプロジェクトの開発環境でAWSのコストを削減する機会がありました。その際に Security Hub が不必要なリージョンまで有効になっており、それらで無駄なコストが発生していました。チームメンバーと話し合った結果、使用していないリージョンではSecurity Hubを無効化する方針になりました。その際にAWS CLIを用いてリージョンを無効化したのですが、複数リージョンを一気に無効化するコマンドは用意されていなかったのでスクリプトを書いて一気に複数のリージョンを無効化してみました。今回はそのやり方を共有したいと思います。
単一リージョンの無効化
まず、特定の1つのリージョンでSecurity Hubを無効化したい場合は、disable-security-hubコマンドを使用します。
前提として、必要な権限があることを確認してください。
aws securityhub disable-security-hub --region <無効化したいリージョン名>
例えば、フランクフルト(eu-central-1)で無効化する場合:
aws securityhub disable-security-hub --region eu-central-1
すると、有効化されていたSecurity Hubがフランクフルトリージョンでは無効化されて初期ページに戻っているのが確認できると思います
複数リージョンの一括無効化
今回私のプロジェクトでは、東京、大阪、バージニア北部以外のリージョンは必要なかったのでそれ以外のリージョンをすべて無効化する必要がありました。マネジメントコンソールから一つずつポチポチと無効化してもよかったのですが、コマンドを使用して自動化してみました。
作業をスクリプト化することでチームメンバーに実際にどのような作業を行なったかをコードベースで共有することができます。
disable-security-hub
は単一のリージョンしか指定することができず、複数のリージョンを一括で無効化することができなかったのでシェルスクリプトを書く必要があります。
スクリプト
disable_security_hub.sh
というシェルスクリプトを用意して、以下のように記述しました。
#!/bin/bash
# 無効化したいリージョンのリスト
regions_to_disable=(
"ap-south-1"
"ap-northeast-2"
"ap-southeast-1"
"ap-southeast-2"
"eu-west-1"
"eu-west-2"
"eu-west-3"
"eu-north-1"
"sa-east-1"
"us-east-2"
"us-west-1"
"us-west-2"
"ca-central-1"
"eu-central-1"
# 必要に応じて他のリージョンを追加
)
# 各リージョンでSecurity Hubを無効化
for region in "${regions_to_disable[@]}"
do
echo "Disabling Security Hub in $region"
aws securityhub disable-security-hub --region $region
# コマンドの実行結果を確認
if [ $? -eq 0 ]; then
echo "Successfully disabled Security Hub in $region"
else
echo "Failed to disable Security Hub in $region"
fi
echo "-----------------------------------"
done
無効化したいリージョンのリストを作ってdisable-security-hub
コマンドをループで回しています。
このスクリプトを実行すると、指定したリージョンでSecurity Hubが順次無効化されます。
使ってみる
それでは実際にスクリプトを試してみます
. ~/scripts/disable_security_hub.sh
=>
Disabling Security Hub in ap-south-1
Successfully disabled Security Hub in ap-south-1
-----------------------------------
Disabling Security Hub in ap-northeast-2
Successfully disabled Security Hub in ap-northeast-2
-----------------------------------
Disabling Security Hub in ap-southeast-1
Successfully disabled Security Hub in ap-southeast-1
-----------------------------------
Disabling Security Hub in ap-southeast-2
Successfully disabled Security Hub in ap-southeast-2
-----------------------------------
Disabling Security Hub in eu-west-1
Successfully disabled Security Hub in eu-west-1
-----------------------------------
Disabling Security Hub in eu-west-2
Successfully disabled Security Hub in eu-west-2
-----------------------------------
Disabling Security Hub in eu-west-3
Successfully disabled Security Hub in eu-west-3
-----------------------------------
Disabling Security Hub in eu-north-1
Successfully disabled Security Hub in eu-north-1
-----------------------------------
Disabling Security Hub in sa-east-1
Successfully disabled Security Hub in sa-east-1
-----------------------------------
Disabling Security Hub in us-east-2
Successfully disabled Security Hub in us-east-2
-----------------------------------
Disabling Security Hub in us-west-1
Successfully disabled Security Hub in us-west-1
-----------------------------------
Disabling Security Hub in us-west-2
Successfully disabled Security Hub in us-west-2
-----------------------------------
Disabling Security Hub in ca-central-1
Successfully disabled Security Hub in ca-central-1
-----------------------------------
Disabling Security Hub in eu-central-1
Successfully disabled Security Hub in eu-central-1
-----------------------------------
マネジメントコンソールを確認するとそれぞれのリージョンでSecurity Hubが無効になっているのがわかると思います。一気に複数リージョンに対してコマンド操作を実行することができて便利ですね!
誤って無効化した場合は、同様の方法でenable-security-hub
コマンドを使用して再有効化できます。
おわりに
AWS CLIを使用してSecurity Hubを特定のリージョンで無効化する方法を紹介しました。単一リージョンの場合は簡単なコマンド一つで、複数リージョンの場合はシェルスクリプトを使用することで効率的に管理できます。
ただし、Security Hubはセキュリティ監視において重要な役割を果たすため、無効化する際は十分な検討が必要です。組織のセキュリティ要件と照らし合わせて、適切に判断してください。
参考になれば幸いです。